﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Common;

namespace Entidades.Models
{
    public class ReclamoInfo
    {
        #region Constructores
        
        /// <summary>
        /// Constructor por default
        /// </summary>
        /// <param name="guion"></param>
        public ReclamoInfo()
        {
        }

        /// <summary>
        /// Construye un objeto ReclamoInfo a partir de un Reclamo
        /// </summary>
        /// <param name="reclamo"></param>
        public ReclamoInfo(Reclamo reclamo)
        {
            this.Id             = reclamo.Id;

            this.Estado         = reclamo.Estado != null ? reclamo.Estado.Nombre : string.Empty;
            this.Fecha          = reclamo.Fecha;
            this.GuionEpisodio  = reclamo.Pago != null && reclamo.Pago.Guion != null ? reclamo.Pago.Guion.Episodio : 0;
            this.GuionTitulo    = reclamo.Pago != null && reclamo.Pago.Guion != null ? reclamo.Pago.Guion.Titulo : string.Empty;
            this.IdEstado       = reclamo.Estado != null ? reclamo.Estado.Id : WellKnownKeys.Entities.DEFAULT_ID;
            this.IdGuion        = reclamo.Pago != null && reclamo.Pago.Guion != null ? reclamo.Pago.Guion.Id : WellKnownKeys.Entities.DEFAULT_ID;
            this.IdPago         = reclamo.Pago != null ? reclamo.Pago.Id : WellKnownKeys.Entities.DEFAULT_ID;
            this.IdUsuario      = reclamo.Pago != null && reclamo.Pago.Proveedor != null ? reclamo.Pago.Proveedor.Id : WellKnownKeys.Entities.DEFAULT_ID;
            this.Usuario        = reclamo.Pago != null && reclamo.Pago.Proveedor != null ? reclamo.Pago.Proveedor.Nombre + " " + reclamo.Pago.Proveedor.Apellido : string.Empty;
            
            this.Items = new ReclamoItemInfo[reclamo.Items.Count];
            for(var i=0; i < reclamo.Items.Count; i++)
            {
                this.Items[i] = new ReclamoItemInfo( reclamo.Items[i] );
            }
        }

        #endregion

        #region Propiedades

        /// <summary>
        /// Id (PK)
        /// </summary>
        public int Id  { get; set; }

        /// <summary>
        /// Id del Pago
        /// </summary>
        public int IdPago  { get; set; }

        /// <summary>
        /// Items del Reclamo
        /// </summary>
        public ReclamoItemInfo[] Items  { get; set; }

        /// <summary>
        /// Id del Guión
        /// </summary>
        public int IdGuion  { get; set; }

        /// <summary>
        /// Id del Estado del Reclamo
        /// </summary>
        public int IdEstado  { get; set; }

        /// <summary>
        /// Estado del Reclamo
        /// </summary>
        public string Estado  { get; set; }

        /// <summary>
        /// Titulo del Guión
        /// </summary>
        public string GuionTitulo  { get; set; }

        /// <summary>
        /// Episodio del Guión
        /// </summary>
        public int? GuionEpisodio  { get; set; }

        /// <summary>
        /// Fecha
        /// </summary>
        public DateTime Fecha  { get; set; }

        /// <summary>
        /// Id del Usuario
        /// </summary>
        public int IdUsuario  { get; set; }

        /// <summary>
        /// Nombre y Apellido del Usuario
        /// </summary>
        public string Usuario  { get; set; }

        #endregion
    }
}
